package cn.rkylin.oms.item.service;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageInfo;

import cn.rkylin.apollo.common.util.HttpUtils;
import cn.rkylin.core.utils.StringUtil;
import cn.rkylin.oms.goods.vo.PrjSkuVO;
import cn.rkylin.oms.item.vo.GroupSkuInfo;
import cn.rkylin.oms.item.vo.ItemVO;
import cn.rkylin.oms.item.vo.SkuVO;

/**
 * 平台商品服务层接口
 *
 * @author wangxing
 * @version 1.0
 * @created 16-2月-2017 9:00:00
 */
public interface IItemService {

    /**
     * 查询平台商品
     *
     * @param page
     * @param rows
     * @param itemVO
     * @return
     * @throws Exception
     */
    public PageInfo<ItemVO> findByWhere(int page, int rows, ItemVO itemVO) throws Exception;

    /**
     * 查询平台规格
     *
     * @param page
     * @param rows
     * @param skuVO
     * @return
     * @throws Exception
     */
    public PageInfo<SkuVO> findByWhere(int page, int rows, SkuVO skuVO) throws Exception;

    /**
     * 查询平台规格
     *
     * @param page
     * @param rows
     * @param skuVO
     * @return
     * @throws Exception
     */
    public List<SkuVO> findByWhere(SkuVO skuVO) throws Exception;

    /**
     * 根据itemCode找EcItem
     *
     * @param id
     * @return
     * @throws Exception
     */
    public List<ItemVO> findByItemCode(ItemVO itemVO) throws Exception;

    /**
     * 根据ID找EcItem
     *
     * @param id
     * @return
     * @throws Exception
     */
    public ItemVO getEcItemById(String id) throws Exception;

    /**
     * 系统商品以及规格数据处理。
     *
     * @param goodsInfo
     * @return
     * @throws Exception
     */
    public Map<String, Object> modifyGroupSkuData(GroupSkuInfo groupSkuInfo) throws Exception;

    /**
     * 自动关联系统商品
     *
     * @param ecitemid 平台商品Id
     * @param prjid    项目Id
     * @return 错误消息
     * @throws Exception 异常
     */
    public String autoRelationSysGoods(String[] ecitemid, String prjid) throws Exception;

    /**
     * 查询项目sku list
     *
     * @param param 查询参数
     * @param prjid 项目Id
     */
    public List<PrjSkuVO> getProjectSkuList(Map<String, Object> param) throws Exception;

    /**
     * getProjectSkuList4SalesPromotion:根据项目和是否赠品查询规格商品列表. <br/>
     *
     * @param param
     * @return
     * @throws Exception
     * @author zhanghao
     */
    public List<PrjSkuVO> getProjectSkuList4SalesPromotion(Map<String, Object> param) throws Exception;

    /**
     * 手动关联系统商品
     *
     * @param ecSkuId  平台规格Id
     * @param prjSkuId 项目sku Id
     * @throws Exception 异常
     */
    public void manualRelationSysGoods(String ecSkuId, String prjSkuId) throws Exception;

    /**
     * 批量修改SKU库存同步标识
     *
     * @param ecItemId  平台商品Id列表
     * @param autoStock 同步库存
     * @throws Exception 异常
     */
    public void batchUpdateAutoStock(String[] ecItemId, String autoStock) throws Exception;

    /**
     * 更新同步库存标识
     *
     * @param ecSkuId   平台规格Id
     * @param autoStock (y:可以同步,n:不)
     * @throws Exception 异常
     */
    public void updateAutoStock(String ecSkuId, String autoStock) throws Exception;

    /**
     * 系统订单相关修改
     *
     * @param ecSkuId 平台规格Id
     * @throws Exception 异常
     */
    public void doUpdateOrder(String ecSkuId, String prjSkuId) throws Exception;

    /**
     * 取消关联系统商品
     *
     * @param ecSkuId 平台规格Id
     * @throws Exception 异常
     */
    public Map<String, Object> cancelRelationSysGoods(String ecSkuId) throws Exception;

    /**
     * 批量设置
     *
     * @param ecItemId  平台商品Id
     * @param listingYn (y:上架,n:下架)
     * @throws Exception 异常
     */
    public void batchSetting(String[] ecItemId, String listingYn) throws Exception;

    /**
     * 商品上下架
     *
     * @param ecitemid   平台商品Id
     * @param listingFlg (true:上架,false:下架)
     * @return 错误消息
     * @throws Exception 异常
     */
    public String listingItem(String[] ecitemid, boolean listingFlg) throws Exception;

    /**
     * 复制平台商品为系统商品
     *
     * @param ecItemId 平台商品Id数组
     * @return Map<String   ,       Object>
     * @throws Exception 异常
     */
    public Map<String, Object> copyPlatformItem2SystemItem(String[] ecItemId, String entId, String entName) throws Exception;

    /**
     * batchancelRelCationSysGoods:批量取消关联系统商品
     *
     * @param ecitemid
     * @return
     */
    public Map<String, Object> batchancelRelCationSysGoods(String[] ecitemid) throws Exception;

    /**
     * 同步店铺库存
     *
     * @param shopId 网店Id
     * @return 错误消息
     * @throws Exception 异常
     */
    public String synchShopStock(String shopId) throws Exception;

    /**
     * 同步商品库存
     *
     * @param ecItemId 平台商品Id列表
     * @return 错误消息
     * @throws Exception 异常
     */
    public String synchItemStock(String[] ecItemId) throws Exception;

    /**
     * 同步SKU库存
     *
     * @param ecSkuId 平台规格Id
     * @return 错误消息
     * @throws Exception 异常
     */
    public String synchSkuStock(String ecSkuId) throws Exception;

    /**
     * 获取商品库存数
     * @param itemVO
     * @return
     * @throws Exception
     */
    public Map<String, Object> getPlatformStockCount(ItemVO itemVO) throws Exception;

}
